Software reuse is a critical problem for Information Technology businesses involved with the development of custom software solutions. Most organizations build software solutions for focused markets, also called business lines, verticals or domains, and they seek to grow their expertise with every project. In a typical software development project, the project requirements are collected, and then the solution is developed and tested with the use of design data—typically in diagrammatic form—and ultimately released to the customer. At the end of the project, a report is generated to capture the learning. However, it is rare that project-end deliverables or reports are explicitly used to improve the solution development process for new projects.
One way in which the learning can be captured is by use of ontologies. An ontology is a data model that represents a domain of interest, and is used to reason about the objects in that domain and the relationships between them. Ontology focuses on both providing and expressing attributes and rich relationships among entities in the domain of interest. In other words, ontology is the explicit specification of conceptualization. Ontologies usually describe the set of entities and relationships among them by these elements: (a) individuals (instances), (b) classes (concepts), (c) attributes, and (d) relations.